/*
 * Filename:    IndicatorConfigService.java
 * Copyright:   2014 中国平安保险（集团）股份有限公司 版权所有
 * Company:     平安科技养老险及健康险系统开发部
 * Create at:   2014年10月10日
 * ex-xieqi001
 */
package com.paic.mhis.hcpms.quota.indicatorconfig.biz.service;

import java.util.List;
import java.util.Map;

import com.paic.mhis.hcpms.quota.indicatorconfig.dto.IndicatorBaseDTO;
import com.paic.mhis.hcpms.quota.indicatorconfig.dto.IndicatorTreeDTO;
import com.paic.mhis.hcpms.quota.indicatorconfig.dto.IndicatorWarnValueDTO;
import com.paic.mhis.hcpms.quota.indicatorconfig.exception.IndicatorConfigException;

/**
 * 
 * @author EX-XIEQI001
 * 
 */
public interface IndicatorConfigService {

	/**
	 * 获取当前登陆用户所在统筹区的所有可以新增的指标信息
	 * 
	 * @return 指标集合
	 */
	public Map<String, Object> getIndicatorAddAll(Map<String, Object> map);

	/**
	 * 获取当前登陆用户所在统筹区的所有可用的指标信息
	 * 
	 * @return 指标集合
	 */
	public List<IndicatorBaseDTO> getIndicatorBaseAll(String regionCode);

	/**
	 * 获取当前登陆用户所在区域的所有可用的指标信息
	 * 
	 * @return 指标集合
	 */
	public List<IndicatorTreeDTO> getIndicatorTreeAll();

	/**
	 * 获取当前登陆用户所在区域的所有可用的指标信息
	 * 
	 * @return 指标集合
	 */
	public List<IndicatorTreeDTO> getIndicatorTreeAll(String userName);

	/**
	 * 新增指标
	 * 
	 * @param kpiIds
	 *            kpiId 集合
	 * @throws IndicatorConfigException
	 */
	public void addIndicators(List<String> kpiIds, String username, String regionCode) throws IndicatorConfigException;

	/**
	 * 新增指标
	 * 
	 * @param username
	 *            当前登陆用户
	 * @throws IndicatorConfigException
	 */
	public void addIndicatorAll(String username, String regionCode) throws IndicatorConfigException;

	/**
	 * 删除指标
	 * 
	 * @param kpiId
	 * @param uaerName
	 * @throws IndicatorConfigException
	 */
	public void deleteIndicator(String kpiId, String uaerName, String regionCode) throws IndicatorConfigException;

	/**
	 * 根据 指标内部编码查询指标详细信息
	 * 
	 * @param kpiId
	 *            指标内部编码 regionCode 统筹区编码
	 * @return
	 */
	public IndicatorBaseDTO getIndicatorsInfo(String kpiId, String regionCode) throws IndicatorConfigException;

	/**
	 * 修改指标信息
	 * 
	 * @param kpiTypes
	 *            指标类型集合
	 * @param orgTypes
	 *            指标机构集合
	 * @param showType
	 *            指标维度
	 * @param visitType
	 *            指标适用场景
	 * @param kpiId
	 *            指标内部编码
	 * @throws IndicatorConfigException
	 */
	public void updateIndicatorInfo(List<String> kpiTypes, List<String> orgTypes, String showType, String visitType,
			String isValid, String kpiId, String username, String regionCode) throws IndicatorConfigException;

	/**
	 * 修改阈值
	 * 
	 * @param id
	 * @param kpiId
	 * @param vlaue
	 * @throws IndicatorConfigException
	 */
	public void updateIndicatorValue(String id, String kpiId, String value, String username, String regionCode)
			throws IndicatorConfigException;

	/**
	 * 修改预警阈值
	 * 
	 * @param id
	 * @param kpiId
	 * @param value
	 * @param username
	 *            regionCode
	 * @throws IndicatorConfigException
	 */
	public void updateIndicatorsWarnValue(String id, String kpiId, String warnValue, String username, String regionCode)
			throws IndicatorConfigException;

	/**
	 * 修改预警阈值
	 * 
	 * @param id
	 * @param kpiId
	 * @param value
	 * @param username
	 *            regionCode
	 * @throws IndicatorConfigException
	 */
	public void updateIndicatorsWarnValue(String username, IndicatorWarnValueDTO extendVal)
			throws IndicatorConfigException;

	/**
	 * 计算阈值区间
	 * 
	 * @param kind
	 * @param extendVal
	 * @return
	 * @throws IndicatorConfigException
	 */
	public Map<String, Object> calKpiValues(String kind, IndicatorWarnValueDTO extendVal)
			throws IndicatorConfigException;
	/**
	 * 返回机构数量
	 * @param regionCode 统筹区
	 * @param orgLevel 机构级别
	 */
	public int numOfOrg(Map<String,Object> map);
	
}
